/*
        发送get请求、delete请求
        http({
            method:'xxx'
            url:'xxx',
            params:{......}
        })

        发送post请求、put请求、patch请求
        http({
            method:'xxx'
            url:'xxx',
            data:{......}
        })
    */

        async function http(obj){
            //解构赋值
            let { method,url,params,data } = obj;
    
            // 判断是否有params参数
            // 1、如果有params参数，则把params对象转换成 key=value&key=value的形式，并且拼接到url之后
            // 2、如果没有params参数，则不管
            if(params){
                // 把对象转换成 key=value&key=value 的方法
                // 固定写法：new URLSearchParams(obj).toString()
                let str=new URLSearchParams(params);
                //console.log(str);
                //拼接到url上
                url += '?' + str;
            }
    
            //最终的结果
            let res;
            //console.log(data);
    
            if(data){
                //如果有data参数,此时直接设置
                res=await fetch(url,{
                    method,
                    headers:{
                        'Content-Type':'application/json'
                    },
                    body:JSON.stringify(data)
                });
            }else{
                 // 如果没有data参数，直接设置url即可
                 res=await fetch(url);
            }
    
            return res.json();
    
        }